# -*- coding: utf-8 -*-
# @Time    : 2022/10/23 15:50
# @Author  : 限量老
from django.shortcuts import render, redirect

from app01 import models
from app01.utils.form_总 import UserModelForm
from app01.utils.pagination分页组件 import Pagination


def user_list(request):
    '''用户管理'''

    # 获取数据库中所有数据
    queryset = models.UserInfo.objects.all()

    # 分页:
    page_object = Pagination(request, queryset)
    context = {
        'queryset': page_object.page_queryset,
        'page_string': page_object.html()
    }

    return render(request, 'user_list.html', context)


def user_add(request):
    '''添加用户'''
    if request.method == 'GET':
        form = UserModelForm()  # 实例化
        return render(request, 'user_add.html', {'form': form})

    # 获取用户在页面提交的数据
    form = UserModelForm(data=request.POST)
    if form.is_valid():  # 对每一个校验,如果没错执行,如果有错跳出

        # 添加到数据库中
        form.save()  # 表单中每一个数据都一块保存
        return redirect('/user/list')

    # 出错后重定向回部门列表页面,包括表单中内容
    return render(request, 'user_add.html', {'form': form})


def user_edit(request, nid):
    '''编辑用户'''
    row_object = models.UserInfo.objects.filter(id=nid).first()  # 取得编辑行,获取所在ID
    if request.method == 'GET':
        # 根据ID去数据库获取要编辑的那一行数据
        form = UserModelForm(instance=row_object)  # 把数据发送到表单中去
        return render(request, 'user_edit.html', {'form': form})

    # 提交后数据处理:
    form = UserModelForm(data=request.POST, instance=row_object)  # 接收表单提交,更新到这一行
    if form.is_valid():  # 校验成功

        '''如果想要再用户输入以外再增加一些值,可以用:#form.instance.字段名=某个值'''

        form.save()  # 把表单各字段更新到数据库
        return redirect('/user/list')
    return render(request, 'user_edit.html', {'form': form})  # 如果校验不成功,显示错误信息,重回编辑页面


def user_delete(request, nid):
    '''删除用户'''

    models.UserInfo.objects.filter(id=nid).delete()
    return redirect('/user/list')
